package data;

import java.util.LinkedList;

public class SynchronizedListQueue implements MessageQueue {
	//lock object pour mutex
	
	static class theLock extends Object {}
	static public theLock lockObject = new theLock();
	
  private final LinkedList<Message> queue;

  public SynchronizedListQueue() {
    queue = new LinkedList<Message>();
  }

  public void add(Message message) {
	  synchronized (lockObject){
		  queue.add(message);
	  }
  }

  public boolean isEmpty() {
    return size() == 0;
  }

  public Message remove() {
	  synchronized (lockObject){
		  return queue.remove();
	  }
  }

  public int size() {
    return queue.size();
  }
//pour size() et isEmpty(), quand on les utilise dans while() ou if() etc, il
// faut synchronized toute la partie apres while() ou if(), pour que le resultat
// soit vrai pendant les instrutions suivantes.
}